The goals of the High Performance Biomedical Computing Program are to identify and solve computational problems in biomedicine that can benefit from high performance computing and communication hardware, modern software engineering principles, and efficient algorithms. This effort includes providing high performance parallel computer systems for the NIH staff and the development of parallel algorithms for biomedical applications. Using a high performance parallel computer, biomedical scientists can greatly reduce the time it takes to complete computationally intensive tasks and adopt new approaches for processing experimental data. This may allow the inclusion of more data in a calculation, the determination of a more accurate result, a reduction in the time needed to complete a long computation, or the implementation of a new algorithm or more realistic model. With proper computer network connections and interactive user interface, parallel computing is readily available to a biomedical researcher in the laboratory or clinic at the investigator's computer work-station. In addressing these computational challenges, CBEL is developing algorithms for a number of biomedical applications where computational speed is important. These include image processing of electron micrographs, radiation treatment planning, medical imaging, protein and nucleic acid sequence analysis, human genetic linkage analysis, protein folding prediction, nuclear magnetic resonance spectroscopy, x-ray crystallography, quantum chemical methods, and molecular dynamics simulations. The ultimate goal is to have high performance parallel computing facilitate the science that is done at NIH. While developing these computationally demanding applications, CBEL is investigating the following high performance computing issues: partitioning a problem into many parts that can be independently executed on different processors; designing the parts so that the computing load can be distributed evenly over the available processors or dynamically balanced; designing algorithms so that the number of processors is a parameter and the algorithms can be configured dynamically for the available machine; developing tools and environments for producing portable parallel programs; monitoring system performance, and proving that parallel algorithms on a given machine meets its specifications.